package com.octopus.core.downloader;

import com.octopus.core.OctopusListener;
import com.octopus.core.Request;
import com.octopus.core.Response;
import com.octopus.core.downloader.proxy.Proxy;

/**
 * 页面下载器
 *
 * <p>负责所有采集任务的下载
 *
 * @author shoulai.yang@gmail.com
 * @date 2019/07/31
 */
public interface Downloader extends OctopusListener {

  /**
   * 下载任务
   *
   * @param request 任务信息
   * @param proxy 代理服务器（可能为空）
   * @return 页面响应信息
   * @throws DownloadException 下载异常信息
   */
  Response download(Request request, Proxy proxy) throws DownloadException;
}
